package com.wuwei.poi.utils;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class FileUtils {

    /**
     * 传入一个路径，递归获取该路径下所有子目录中以指定字符为结尾的文件的绝对路径，组成一个列表返回
     * @param path 目录路径
     * @param postfix 文件后缀（如 ".ppt", ".txt" 等）
     * @return 所有匹配文件的绝对路径列表
     */
    public static List<String> getFiles(String path, String postfix) {
        List<String> fileList = new ArrayList<>();
        File directory = new File(path);

        // 检查路径是否存在且是目录
        if (!directory.exists() || !directory.isDirectory()) {
            return fileList; // 返回空列表
        }

        // 调用递归方法遍历目录
        collectFiles(directory, postfix.toLowerCase(), fileList);
        return fileList;
    }

    /**
     * 递归收集文件
     * @param directory 当前目录
     * @param postfix   要匹配的后缀（小写）
     * @param fileList  存储结果的列表
     */
    private static void collectFiles(File directory, String postfix, List<String> fileList) {
        File[] files = directory.listFiles();
        if (files == null) {
            return;
        }

        for (File file : files) {
            if (file.isFile() && file.getName().toLowerCase().endsWith(postfix)) {
                fileList.add(file.getAbsolutePath());
            } else if (file.isDirectory()) {
                collectFiles(file, postfix, fileList); // 递归进入子目录
            }
        }
    }
}